x11: Add EGLDisplay getter
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 11 May 2021 11:25:38 +0000 (12:25 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 11 May 2021 11:42:16 +0000 (12:42 +0100)
Getting an EGLDisplay object is messy; might as well expose the function
we use internally to save some time.

gdk/x11/gdkglcontext-egl.c
gdk/x11/gdkx11glcontext.h

index 1836f19057e77c077e7a93e4f8ee12c1f1aeeeb9..91f3e8297cc5808dd60f1c5909bbc500c0c604d7 100644 (file)
@@ -84,12 +84,29 @@ drawable_info_free (gpointer data)
   g_free (info);
 }
 
-static EGLDisplay
+/**
+ * gdk_x11_display_get_egl_display:
+ * @display: (type GdkX11Display): an X11 display
+ *
+ * Retrieves the EGL display connection object for the given GDK display.
+ *
+ * This function returns `NULL` if GDK is using GLX.
+ *
+ * Returns: (nullable): the EGL display object
+ *
+ * Since: 4.4
+ */
+gpointer
 gdk_x11_display_get_egl_display (GdkDisplay *display)
 {
   EGLDisplay edpy = NULL;
   Display *dpy;
 
+  g_return_val_if_fail (GDK_IS_X11_DISPLAY (display), NULL);
+
+  if (GDK_X11_DISPLAY (display)->have_glx)
+    return NULL;
+
   edpy = g_object_get_data (G_OBJECT (display), "-gdk-x11-egl-display");
   if (edpy != NULL)
     return edpy;
index 34cbd70d75668bb0dc045df8b8a3c47b3525e934..173f6acac778f802aebfae245d0b9557d706f9e9 100644 (file)
@@ -48,6 +48,9 @@ gboolean        gdk_x11_display_get_egl_version (GdkDisplay *display,
                                                  int        *major,
                                                  int        *minor);
 
+GDK_AVAILABLE_IN_4_4
+gpointer        gdk_x11_display_get_egl_display (GdkDisplay *display);
+
 G_END_DECLS
 
 #endif /* __GDK_X11_GL_CONTEXT_H__ */